package com.sau.base;

import dev.langchain4j.chain.ConversationalChain;
import dev.langchain4j.model.chat.ChatLanguageModel;
import dev.langchain4j.model.ollama.OllamaChatModel;
import dev.langchain4j.memory.ChatMemory;
import dev.langchain4j.memory.chat.MessageWindowChatMemory;
import java.util.Scanner;

public class HelloWorld {
    public static void main(String[] args) {
        // 创建 Ollama 聊天模型实例
        ChatLanguageModel model = OllamaChatModel.builder()
                .baseUrl("http://127.0.0.1:11434")
                .modelName("qwen2:0.5b")
                .build();

        // 创建对话内存，用于存储对话上下文
        ChatMemory chatMemory = MessageWindowChatMemory.withMaxMessages(10); // 保留最近的 10 条消息

        // 创建 ConversationalChain，将模型和对话内存绑定
        ConversationalChain chain = ConversationalChain.builder()
                .chatLanguageModel(model)
                .chatMemory(chatMemory)
                .build();

        // 创建 Scanner 用于读取用户输入
        Scanner scanner = new Scanner(System.in);
        System.out.println("你可以开始与模型对话了！（输入 'exit' 退出）");

        // 持续对话循环
        while (true) {
            System.out.print("你: ");
            String userInput = scanner.nextLine();

            // 如果用户输入 "exit"，退出对话
            if ("exit".equalsIgnoreCase(userInput)) {
                System.out.println("对话结束，再见！");
                break;
            }

            // 调用模型生成回复
            String response = chain.execute(userInput);
            System.out.println("模型: " + response);
        }

        scanner.close();
    }
}
